package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @description 商品信息
 */
@Repository
public interface GoodsDao {


    String getMaxCode();


    List<Goods> SelectAllGoods(Integer page, Integer rows, String codeOrName, Integer goodsTypeId);


    Integer SelectAllGoodsCount();

    /**
     * 分页查询供应商
     * @param page
     * @param rows
     * @param supplierName
     * @return
     */
    List<Supplier> SelectAllSupplier(Integer page, Integer rows, String supplierName);

    /**
     * 查询供应商总数
     * @return
     */
    Integer SelectAllSupplierCount();

    /**
     * 添加供应商
     * @param supplier
     */
    Integer addSupplier(Supplier supplier);

    /**
     * 修改供应商
     * @param supplier
     */
    Integer updateSupplier(Supplier supplier);


    /**
     * 删除供应商
     * @param parseInt
     */
   Integer supplierDelete(List<String> parseInt);

    /**
     * 查询客户
     * @return
     */
    List<Customer> SelectAllCustomer(Integer page, Integer rows, String customerName);

    /**
     * 查询客户总数
     * @return
     */
    Integer SelectAllCustomerCount();

    /**
     * 添加客户
     * @param customer
     */
    Integer addCustomer(Customer customer);

    /**
     * 修改客户
     * @param customer
     */
    Integer updateCustomer(Customer customer);

    /**
     * 删除客户
     * @param parseInt
     */
    Integer customerDelete(int parseInt);

    /**
     * 查询所有商品单位
     * @return
     */
    List<Unit> selectList();

    /**
     * 查询所有商品信息
     * @return
     */
    List<Goods> selectAllGoodsMsg(Integer page, Integer rows, String goodsName, Integer goodsTypeId);



    /**
     * 新增分类
     */
    Integer saveGoodsType(String name, Integer id);





    List<GoodsType> selectGoodsTypeAll(Integer pId);



    /**
     * 新增商品
     * @return
     */
    Integer saveGoodsMsg(Goods goods);

    /**
     * 修改商品
     * @param goods
     */
    Integer updateGoodsMsg(Goods goods);

    /**
     * 删除分类
     * @param goodsTypeId
     */
    void deleteGoodsType(Integer goodsTypeId);

    /**
     * 删除商品信息
     * @param goodsId
     */
    void deleteGoodsMsg(Integer goodsId);

    /**
     * 查询空库存商品信息
     * @param i
     * @param rows
     * @param nameOrCode
     * @return
     */
    List<Goods> selectNullRepertory(int page, Integer rows, String nameOrCode);

    /**
     * 查询空库存总数
     * @return
     */
    Integer selectNullRepertoryCount();

    List<Goods> selectRepertory(Integer page, Integer rows, String nameOrCode);

    Integer selectRepertoryCount();


    /*
    添加库存,修改数量或成本价
     */
    void addGoodsRepertory(Integer goodsId, Integer inventoryQuantity, double purchasingPrice);

    void deleteGoodsRepertory(Integer goodsId);

    /**
     * 新增报损
     * @param damageList
     * @param damageListGoodsStr
     */
    void saveDamageList(DamageList damageList, String damageListGoodsStr);

    /**
     * 新增报溢单
     * @param overflowList
     * @param overflowListGoodsStr
     */
    void saveOverflowListGoods(OverflowList overflowList, String overflowListGoodsStr);

    /**
     * 库存报警
     * @return
     */
    List<Goods> selectListAlarm();

    List<DamageList> selectDamageListGoods(String sTime, String eTime);

    List<OverflowList> selectOverflowListGoods(String sTime, String eTime);

    List<DamageList> selectDamageListGoodsList(Integer damageListId);

    List<DamageList> selectOverflowListGoodsList(Integer overflowListId);
}
